package Controlador;

import Modelo.Listas;
import Modelo.Ruta_Coop;
import Vista.JFrameRutaCoop;
import Vista.Mensajes;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class ControladorRutaCoop implements ActionListener, KeyListener {

    private JFrameRutaCoop formRtCp;
    private Listas list;

    public ControladorRutaCoop(Listas lis) 
    {
        list = lis;
        formRtCp = new JFrameRutaCoop();
        formRtCp.agregarListener(this);
        formRtCp.setVisible(true);
        formRtCp.setLocationRelativeTo(null);
        cargarRutas();
        cargarCoop();
    }

//------------------------------------------------------------------------------
    /* Sirve para hacer que se carguen el combo rif y el texto nombre desde
     el vector de rutas*/
    private void cargarRutas() {
        int fila;
        for (fila = 0; fila < list.getListaRutas().size(); fila++) {
            String cod;
            String nom;
            cod = list.getListaRutas().get(fila).getCodigoR();
            nom = list.getListaRutas().get(fila).getDestino();
            formRtCp.getCmbCodigoRA().addItem(cod);
        }

    }
//------------------------------------------------------------------------------
    /* Sirve para hacer que se carguen el combo codigo y el texto destino desde
     el vector de cooperativa*/

    private void cargarCoop() {
        int fila;
        String rif;
        String nom;
        for (fila = 0; fila < list.getListaCoop().size(); fila++) {
            rif = list.getListaCoop().get(fila).getRifC();
            formRtCp.getCmbRifCoop().addItem(rif);
            if (list.getListaCoop().get(fila).getRifC().equals(rif)) {
                nom = list.getListaCoop().get(fila).getNombreC();
            }
        }
    }
//------------------------------------------------------------------------------    
    // carga la tabla con todo el vector

//------------------------------------------------------------------------------

private void Grabar() 
 {
   String rif, nom, cod, des;
   Ruta_Coop rtcp = new Ruta_Coop();
   rif = formRtCp.getCmbRifCoop().getSelectedItem().toString();
   nom = formRtCp.getTxtNombreCA().getText();
   cod = formRtCp.getCmbCodigoRA().getSelectedItem().toString();
   des = formRtCp.getTxtDestinoRA().getText();
   rtcp.Ruta_Coop(cod, rif, nom, des);
   
   if(list.ExisteRutaCoop(cod,rif)==-1)
   {
       list.getListaRutaCoop().add(rtcp);
   
   for (int i = 0; i < list.getListaRutaCoop().size(); i++) 
     {
        rtcp = list.getListaRutaCoop().get(i);
        formRtCp.getjTableAsignadas().setValueAt(rtcp.getCodigoCp(), i, 0);
        formRtCp.getjTableAsignadas().setValueAt(rtcp.getNombreCp(), i, 1);
        formRtCp.getjTableAsignadas().setValueAt(rtcp.getCodigoR(), i, 2);
        formRtCp.getjTableAsignadas().setValueAt(rtcp.getDestinoR(), i, 3);
     
     }
   
   formRtCp.getCmbCodigoRA().requestFocusInWindow();
   

   Mensajes.Aviso("La ruta a sido asignada a la Cooperativa", "");
       
   }
   else
   {
       formRtCp.getCmbCodigoRA().requestFocusInWindow();
       Mensajes.Aviso("Esta ruta ya esta asignada a la cooperativa", "");
   }
   
   
 }

//------------------------------------------------------------------------------    
    /* carga la tabla con el vector asignado al rif seleccionado en el combo*/

    private void carga() {
        Ruta_Coop rtcp;
        String cadena;
        int fila;
        cadena = formRtCp.getCmbRifCoop().getSelectedItem().toString();
        for (int i = 0; i < list.getListaRutaCoop().size(); i++) {
            for (fila = 0; fila < formRtCp.getjTableAsignadas().getRowCount(); fila++) {
                cadena = (String) formRtCp.getjTableAsignadas().getValueAt(fila, 0);
                if (cadena == null) {
                    break;
                }
            }//segundo for
            rtcp = (Ruta_Coop) list.getListaRutaCoop().get(i);
            if (rtcp.getCodigoCp().equals(formRtCp.getCmbRifCoop().getSelectedItem().toString())) {
                formRtCp.getjTableAsignadas().setValueAt(rtcp.getCodigoCp(), fila, 0);
                formRtCp.getjTableAsignadas().setValueAt(rtcp.getNombreCp(), fila, 1);
                formRtCp.getjTableAsignadas().setValueAt(rtcp.getCodigoR(), fila, 2);
                formRtCp.getjTableAsignadas().setValueAt(rtcp.getDestinoR(), fila, 3);
            }
        }//primer for
    }
//------------------------------------------------------------------------------  
    /* comboRif: sirve para actualizar el texto cooperativa segun 
     * el rif seleccionado*/

    private void comboRif() {
        String cadena;
        int pos;
        cadena = formRtCp.getCmbRifCoop().getSelectedItem().toString();
        for (pos = 0; pos < list.getListaCoop().size(); pos++) {
            if (list.getListaCoop().get(pos).getRifC().equals(cadena)) {
                formRtCp.getTxtNombreCA().setText(list.getListaCoop().get(pos).getNombreC());
            }
        }
    }
//---------------------------------------------------------
 
    /* comboCodigoR: sirve para actualizar el texto destino 
     * segun el codigo seleccionado*/

    private void comboCodigoR() {
        String cadena = formRtCp.getCmbCodigoRA().getSelectedItem().toString();
        for (int i = 0; i < list.getListaRutas().size(); i++) {
            if (list.getListaRutas().get(i).getCodigoR().equals(cadena)) {
                formRtCp.getTxtDestinoRA().setText(list.getListaRutas().get(i).getDestino());
            }
        }
    }
    
    
//********************************
    // Metodos Abstractos
//********************************

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(formRtCp.getBtnSalirRC())) {
            formRtCp.dispose();
        }

        if (e.getSource().equals(formRtCp.getBtnGuardarRC())) {
            Grabar();
        }
        if (e.getSource().equals(formRtCp.getBtnCancelarRC())) {
        }
        
        if (e.getSource().equals(formRtCp.getBtnBuscarRC())) {
            new ControladorConsulRutaCoop(list);
        }

        if (e.getSource().equals(formRtCp.getCmbRifCoop())) {
            String cadena;
            cadena = formRtCp.getCmbRifCoop().getSelectedItem().toString();
            if (cadena.equals("Seleccione:"))
            {
                formRtCp.getTxtNombreCA().setText("");
                formRtCp.getCmbCodigoRA().setSelectedItem("Seleccione:");
            }
            comboRif();
        }
        if (e.getSource().equals(formRtCp.getCmbCodigoRA())) {
            String cadena = formRtCp.getCmbCodigoRA().getSelectedItem().toString();
            if(cadena.equals("Seleccione:"))
            {
                formRtCp.getTxtDestinoRA().setText("");
            }
            comboCodigoR();
        }
        //-----------
    }

    @Override
    public void keyTyped(KeyEvent e) {
    }

    @Override
    public void keyPressed(KeyEvent e) {
    }

    @Override
    public void keyReleased(KeyEvent e) {
    }
}
